package com.etime.shycourse.services.wxcourselist;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.etime.shycourse.dao.CourseMapper;
import com.etime.shycourse.dao.SysbannerMapper;
import com.etime.shycourse.dto.WXOffLineCourseShowDto;
import com.etime.shycourse.pojo.Course;
import com.etime.shycourse.pojo.Sysbanner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 小程序首页相关数据服务层实现类
 */
@Service
public class WXIndexPageServiceImpl implements WXIndexPageService {

    /**
     * banner图数量
     */
    @Value("${bannercount}")
    private Integer bannercount;
    /**
     * 线下课程显示数量
     */
    @Value("${offlinecoursecount}")
    private Integer offlinecoursecount;
    /**
     * 精品推荐课程显示数量
     */
    @Value("${recommendcount}")
    private Integer recommendcount;

    @Autowired
    private SysbannerMapper sysbannerMapper;
    @Autowired
    private CourseMapper courseMapper;

    /**
     * 小程序首页banner轮播图获取(轮播图最多获取5张)
     *
     * @return
     */
    @Override
    public List<Sysbanner> selectSysBannerList() {
        QueryWrapper<Sysbanner> wrapper = new QueryWrapper<> ();
        wrapper.eq ("bannerstate", 1)
                .orderByAsc ("bannersort")
                .last ("limit "+bannercount);
        return sysbannerMapper.selectList (wrapper);
    }

    /**
     * 小程序首页获取线下课程列表
     *
     * @return
     */
    @Override
    public List<WXOffLineCourseShowDto> selectOffLineCourseList() {
        return courseMapper.selectOffLineCourseByIndex(offlinecoursecount);
//        QueryWrapper<Course> wrapper = new QueryWrapper<> ();
//        /*
//         是否推荐（courserecommended） = 1 ;
//         课程状态（coursestate） = 1 ;
//         课程审核状态（courseaudit） = 1;
//         显示线下课程：coursetype=2
//         */
//        wrapper.and (w -> w.eq ("courserecommended", 1)
//                .eq ("coursestate", 1)
//                .eq("coursetype",2)
//                .eq ("courseaudit", 1)
//        );
//        // 排序方式条件
//        // 按照课程排序（coursesort）降序排列。
//        wrapper.orderByDesc ("coursesort");
//        // 取前5条记录
//        wrapper.last ("limit "+offlinecoursecount);
//        return courseMapper.selectList (wrapper);
    }

    /**
     * 精品推荐课程列表
     *
     * @return
     */
    @Override
    public List<Course> selectRecommendCourseList() {
        QueryWrapper<Course> wrapper = new QueryWrapper<> ();
        /*
         是否推荐（courserecommended） = 1 ;
         课程状态（coursestate） = 1 ;
         课程审核状态（courseaudit） = 1;
         精品推荐课程显示在线课程：coursetype=1；
         课程评分>=9的课程:coursescore>=9
         */
        wrapper.and (w -> w.eq ("courserecommended", 1)
                .eq ("coursestate", 1)
                .eq("coursetype",1)
                .eq ("courseaudit", 1)
                .ge ("coursescore", 9)
        );
        // 排序方式条件：按照课程评分（coursescore）降序排列，
        // 按照课程排序（coursesort）降序排列。
        wrapper.orderByDesc ("coursescore", "coursesort");
        // 取前5条记录
        wrapper.last ("limit "+recommendcount);
        return courseMapper.selectList (wrapper);
    }
}
